昨天將券商分點的地理位置處理過,再用google map API 把經緯度爬下來,
matplotlib
以外,還會用到folium
用來繪製互動式網頁地圖Folium是一套Python上的地圖視覺化工具。透過Leaflet這個JavaScript Library以及OpenStreetMap地圖服務,可在Jupyter Notebook上實現互動式地圖繪製。
延續昨天,我先用PLUS_lat_lng_address.xlsx
這個檔案,
券商代碼 券商名稱 開業日 地址 緯度 經度
1020 合庫 2011-12-02 00:00:00 台北市大安區忠孝東路四段285號 25.0416821 121.5542213
1021 合庫- 台中 2011-12-02 00:00:00 台中市西區民權路91號 24.1380648 120.6795332
1022 合庫-台南 2011-12-02 00:00:00 台南市北區成功路48號 22.9981399 120.2077419
1023 合庫-高雄 2011-12-02 00:00:00 高雄市大勇路97號 22.6247854 120.28419
只保留券商代碼
、緯度
、經度
,另存成一個新的資料表,命名成lat_lng_New.xlsx
。
import pandas as pd
# 讀出來看一下資料長怎樣
data = pd.read_excel('E:/時空資料分析/關鍵分點籌碼分析_實測/lat_lng_New.xlsx')
data
df = pd.DataFrame(data)
df
券商代碼 lat lng
0 1020 25.041682 121.554221
1 1021 24.138065 120.679533
2 1022 22.998140 120.207742
3 1023 22.624785 120.284190
4 1024 23.480549 120.448310
... ... ... ...
842 9A9W 24.159410 120.639591
843 9A9x 24.991026 121.308015
844 9A9X 24.799845 120.989694
845 9A9Y 25.012994 121.468181
846 9A9Z 25.056481 121.549584
847 rows × 3 columns
台灣的經緯度範圍是北緯22~25°N、東經120~122°E。
接著安裝一下folium
pip install folium
引用進來開始操作
import folium
# 地圖初始化,設定初始位置和縮放等級
taiwan_map = folium.Map(location=[23.5, 121], zoom_start=7)
# 用for迴圈跑,把資料標記到到地圖上
for index, row in df.iterrows():
folium.Marker(
location=[row['lat'], row['lng']],
#popup 是當點擊標記時,會顯示的名稱,這邊放券商代碼
popup=f"券商代碼: {row['券商代碼']}",
icon=folium.Icon(color='blue', icon='info-sign')
).add_to(taiwan_map)
# 保存地圖成HTML
taiwan_map.save('taiwan_brokers_map.html')
成功的話,到資料夾點開taiwan_brokers_map.html
就可以得到一張可以滑動、縮放的地圖(如下圖)
可以看到連澎湖、金門都有券商分點的據點。
folium
還有很多其他的玩法和呈現模式,可以多去研究玩看看~
接著再用matplotlib簡單畫一張平面2D圖
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm
# 設定字體
zhfont = fm.FontProperties(fname=r'C:\Windows\Fonts\kaiu.ttf') # 使用原始字串
plt.rcParams['font.family'] = zhfont.get_name()
## 圖像大小10*10,配合ConvLSTM模型
plt.figure(figsize=(10, 10))
# 用散佈圖畫,cmap可以調整想要的顏色
plt.scatter(df['lng'], df['lat'],c=df['lat'],marker='o', cmap='summer', label='券商位置')
# 添加券商代碼的標簽
for i, txt in enumerate(df['券商代碼']):
plt.annotate(txt, (df['lng'][i], df['lat'][i]), textcoords="offset points", xytext=(0,10), ha='center')
# 標題名稱和X、Y軸的名稱
plt.title('券商位置分布',fontproperties=zhfont)
plt.xlabel('經度 (lng)',fontproperties=zhfont)
plt.ylabel('緯度 (lat)',fontproperties=zhfont)
# 顯示圖例在左下角
plt.legend(loc='lower left', frameon=True)
plt.savefig('broker_locations.png')
plt.show()
參考文章&資料來源:
1.Python 地圖視覺化- 使用Folium
2.玩玩看地理空間資料!(4) — Folium互動式地圖
3.folium-documentation-Getting Started
每日記錄:
加權指數:收在22027.25點,上漲230.68點,開高走低。
美股因為CPI低於預期,直接大噴發。
星巴克因為挖角一個CEO,一天漲20%好扯@@
今天只有做一點簡單的圖,最近除了在趕自己的研究,還要把學長姐的東西、paper熟悉熟悉 (好忙好忙
接下來才是重頭戲,明天見!